package edu.xjtu.jih.Star;

import edu.xjtu.jih.common.Utils;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class StarService {
    //  根据传入的star判断收藏还是取消收藏
    //  star为1表示收藏,star为0表示取消收藏
    public void star(StarDto dto) {
        SqlSession sess = Utils.openSession();
        try{
            StarDao dao=sess.getMapper(StarDao.class);

            if (dto.getStar()==1){
                dao.star(dto);
            }else{
                dao.cancelStar(dto);
            }

            sess.commit();

        }catch(Exception e){
            sess.rollback();
            e.printStackTrace();
            throw new RuntimeException("修改收藏状态失败");
        }finally {
            sess.close();
        }
    }

    //获取该用户所有收藏商品
    public List<ItemDto> getAllStarItem(int u_id) {
        SqlSession sess = Utils.openSession();
        List<ItemDto> itemList=null;
        try{
            StarDao dao=sess.getMapper(StarDao.class);

            itemList= dao.getAllStarItem(u_id);

            sess.commit();

        }catch(Exception e){
            sess.rollback();
            e.printStackTrace();
            throw new RuntimeException("修改收藏状态失败");
        }finally {
            sess.close();
        }
        return itemList;
    }

    //获取该用户发布的所有商品
    public List<ItemDto> getAllPublishItem(int u_id) {
        SqlSession sess = Utils.openSession();
        List<ItemDto> itemList=null;
        try{
            StarDao dao=sess.getMapper(StarDao.class);

            itemList= dao.getAllPublishItem(u_id);

            sess.commit();

        }catch(Exception e){
            sess.rollback();
            e.printStackTrace();
            throw new RuntimeException("修改收藏状态失败");
        }finally {
            sess.close();
        }
        return itemList;
    }

    public Integer getStarByItemId(StarDto dto) {
        SqlSession sess = Utils.openSession();
        Integer starState=0;
        try{
            StarDao dao=sess.getMapper(StarDao.class);

            starState= dao.getStarByItemId(dto);

            sess.commit();

        }catch(Exception e){
            sess.rollback();
            e.printStackTrace();
            throw new RuntimeException("获取收藏状态失败");
        }finally {
            sess.close();
        }
        return starState;
    }
}
